"""
Art Code for Python 打包脚本
该脚本使用 PyInstaller 将 Art Code for Python.py 打包为可执行文件。
"""

import subprocess
import os
import sys
from cx_Freeze import setup, Executable

# 必要的依赖项
build_exe_options = {
    "packages": ["tkinter", "pygments"],
    "include_files": []
}

# 基础配置（仅适用于Windows）
base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(
    name="Art Code for Python",
    version="1.0",
    description="一个简单的Python代码编辑器",
    options={"build_exe": build_exe_options},
    executables=[Executable("Art Code for Python.py", base=base, icon="icon.ico")]
)

# 检查是否安装了pyinstaller
try:
    import PyInstaller
except ImportError:
    print("未找到 PyInstaller，正在尝试安装...")
    subprocess.check_call(["python", "-m", "pip", "install", "pyinstaller"])

# 配置打包参数
script_name = "Art Code for Python.py"
icon_path = "art_code_icon.ico"  # 可选图标路径（如果存在）
app_name = "Art Code for Python"

# 构建PyInstaller命令
command = [
    "pyinstaller",
    "--name=" + app_name,
    "--windowed",  # 隐藏控制台窗口（适用于GUI应用）
    "--onefile",   # 打包为单个可执行文件
    "--noconfirm"  # 覆盖输出目录而不提示
]

# 如果存在图标文件，则添加图标参数
if os.path.exists(icon_path):
    command.append("--icon=" + icon_path)

# 添加主脚本
command.append(script_name)

# 运行PyInstaller打包命令
print(f"正在使用 PyInstaller 打包 {script_name}...")
subprocess.check_call(command)

print("打包完成！")
print(f"可执行文件位于 dist/{app_name}.exe")